Telegram Group Search
💻 Подборка новостей по PHP за неделю:​

🔎 Laravel 12.4: Поддержка конвейеров в построителе запросов
Команда Laravel выпустила версию 12.4.0, которая включает метод pipe() для построителя запросов, возможность условного пропуска миграций, метод Arr::sole() и другие улучшения. ​

🔎 Eloquent: Приведение строк к HTML в Laravel 12.4
Начиная с версии 12.4, в Laravel можно автоматически приводить атрибуты Eloquent к HTML-строкам с помощью кастомного класса AsHtmlString. Это позволяет безопасно работать с HTML-содержимым в моделях. ​

🔎 Релизы Symfony 6.4.20 и 7.2.5
Symfony объявил о выходе версий 6.4.20 и 7.2.5, содержащих важные исправления и улучшения. Рекомендуется обновиться до этих версий для обеспечения стабильности и безопасности приложений. ​

🔎 Неделя Symfony #952 (24–30 марта 2025 года)

Библиотека пхпшника #свежак
Как использовать принцип инверсии управления в Laravel? 

​Принцип инверсии управления (Inversion of Control, IoC) в Laravel реализуется с помощью сервис-контейнера, который управляет зависимостями между классами и их внедрением. Это позволяет создавать гибкую и тестируемую архитектуру приложений.

В нашем примере:

Определяется интерфейс PaymentGatewayInterface с методом charge, который должен быть реализован любым платежным шлюзом.

Класс StripePaymentGateway реализует этот интерфейс, предоставляя конкретную логику для обработки платежей через Stripe.

Класс OrderProcessor зависит от PaymentGatewayInterface. Вместо создания экземпляра конкретного платежного шлюза внутри себя, он получает его через конструктор, что соответствует принципу инверсии управления.

В сервис-контейнере Laravel регистрируется связь между PaymentGatewayInterface и его реализацией StripePaymentGateway с помощью метода $app->bind().

Создание экземпляра OrderProcessor осуществляется через сервис-контейнер с помощью метода $app->make(), который автоматически внедрит необходимые зависимости.

Использование IoC в Laravel позволяет:​

🔸 Разделить ответственность между классами, делая их более независимыми и удобными для тестирования.

🔸 Легко заменять реализации зависимостей, например, для использования другого платежного шлюза, достаточно зарегистрировать новую реализацию в контейнере.

🔸 Упрощает тестирование, позволяя подменять реальные реализации зависимостей на заглушки или моки.
PHP под капотом: как работает генерация случайных чисел

Вы когда-нибудь задумывались, как компьютер, эта идеальная детерминированная машина, выполняющая команды с математической точностью, умудряется генерировать «случайные» числа? Ведь в его цифровом мире нет места настоящему хаосу — только чёткие алгоритмы и предсказуемые состояния.

Сегодня мы заглянем под капот PHP и разберёмся, как устроена эта иллюзия случайности!

🔗 Хабр
Метод «skip» у планировщика

Иногда вы можете захотеть пропустить выполнение команды, основываясь на определенном условии. Laravel включает метод «skip» для выполнения этого 🚀

Библиотека пхпшника #буст
Forwarded from hahacker news
📚🔄 OTUS – лауреат премии «Цифровые вершины»: как подписка на обучение меняет IT-образование

​Платформа OTUS представила инновационный подход к IT-обучению, запустив сервис подписки, предоставляющий доступ к 151 курсу по ключевым направлениям индустрии. Этот формат позволяет специалистам гибко выбирать образовательные треки и проходить до трех курсов одновременно без дополнительных затрат, что значительно снижает расходы на обучение.​

В 2025 году OTUS была удостоена премии «Цифровые вершины» в номинации «Лучшее IT-решение для образования», что подтверждает эффективность и востребованность их модели обучения. Благодаря подписке, IT-специалисты могут непрерывно обновлять свои знания и навыки, оставаясь конкурентоспособными в стремительно развивающейся сфере.

🔗 Подробности в статье
Please open Telegram to view this post
VIEW IN TELEGRAM
Пхпшники!

Проголосуйте за наш канал, и в сторис мы опубликуем топ материалов, которые должен прочитать каждый пхпшник.

➡️Поддержать канал: https://www.tg-me.com/boost/Библиотека пхпшника | PHP Laravel Symfony CodeIgniter/com.phpproglib
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 Hypervel — новый фреймворк PHP с нативной поддержкой корутин

Если вам нравится Laravel, но не хватает производительности в I/O-нагруженных проектах — знакомьтесь с Hypervel. Это высокопроизводительный PHP-фреймворк, вдохновлённый Laravel, но построенный на Swoole и с полной поддержкой корутин прямо из коробки. 

🤔 Зачем Hypervel, если есть Laravel Octane?

Octane — это круто, он ускоряет Laravel за счёт долгоживущего процесса. Но вот беда: Octane не умеет в неблокирующий I/O.

Допустим, у вас чат-бот на Laravel, и каждый запрос к ИИ занимает 3–5 секунд. Даже с 10 worker-ами ты не обработаешь 100 параллельных запросов — они просто встанут в очередь. Почему? Потому что все воркеры блокируются на время I/O-операций.

Laravel по своей архитектуре не рассчитан на корутины. И в ближайшем будущем это не изменится.

⚡️ Что умеет Hypervel?
Почти полная совместимость с Laravel API
Корутины — из коробки
QPS в 10+ раз выше Octane (в I/O-нагрузке — в 100+ раз)
Поддержка object/connection pool (DB, Redis, HTTP и др.)
Корутинная обработка очередей и cron-задач
Кеши, очереди, блокировки — совместимы с Laravel
Подходит для микросервисов, API-шлюзов, высоконагруженных систем

🧵 Корутины — главная фишка
Корутина — это как функция, которая может «поставиться на паузу», пока идёт I/O (запрос к БД, файл, сеть), и не блокировать весь процесс. Hypervel использует Swoole, где всё работает на корутинах: HTTP, DB, Redis, файлы и даже стандартные функции PHP.

💡 Один процесс в Hypervel может обрабатывать сотни задач параллельно — без запуска 100+ воркеров.

📊 Бенчмарки
Hello World (без I/O): Hypervel в 10 раз быстрее Octane

Симуляция I/O (sleep 1 сек):
Hypervel в сотни раз быстрее


👉 Читать статью
🔧 CLI-лайфхак для PHP-разработчиков: Быстрое выполнение одноразовых команд с помощью опции -r 🚀

Полезная команда, которая позволяет выполнять небольшие фрагменты PHP-кода прямо из командной строки без создания отдельных файлов. Это особенно удобно для быстрого тестирования идей или выполнения одноразовых задач 🖥️

Как это сделать?

1. Откройте терминал на вашем компьютере.

2 Введите следующую команду, заменив код внутри одинарных кавычек на нужный вам PHP-код:
php -r 'echo «Привет, мир!\n»;'


Почему это удобно?

🔸 Быстрота: нет необходимости создавать отдельный файл для выполнения небольшого фрагмента кода.

🔸 Удобство: идеальный способ для тестирования небольших функций или выражений.

🔸 Гибкость: позволяет комбинировать PHP с другими командными инструментами для автоматизации задач.

Обратите внимание:

Экранирование кавычек: при использовании одинарных кавычек внутри PHP-кода их необходимо экранировать обратным слэшем (\'), чтобы избежать конфликтов с внешними кавычками.
php -r 'echo \'Это строка с одинарными кавычками.\' . «\n»;'


Библиотека пхпшника #буст
📣 Программисты, нужен ваш совет

Пилим крутую подборку ноутов для кодеров в 2025-м и хотим собрать реальный фидбек от тех, кто в теме!

Какой ноут спасает вас в кодинге и почему?

Расскажите все:

🔹 Что за зверь (модель, начинка)
🔹 Где жмет и где радует в ежедневной работе
🔹 На какие фишки смотреть при выборе
🔹 Как вам с ним живется

Топовые советы попадут в нашу статью. Сделаем годный гайд, который реально поможет коллегам.

💬 Делитесь в комментах
🔥 Ускоряем тесты с ParaTest

Если вы часто сталкиваетесь с медленными тестами и хоите ускорить процесс разработки, стоит попробовать ParaTest. Этот инструмент позволяет запускать тесты параллельно, что значительно сокращает время выполнения, особенно на больших проектах.

Почему стоит использовать ParaTest:
🔸 Параллельное выполнение: тесты запускаются в несколько процессов одновременно, что ускоряет их выполнение.

🔸 Преимущества для CI: особенно полезно для непрерывной интеграции — тесты запускаются быстрее, что ускоряет релизы.

🔸 Простая установка: ParaTest можно интегрировать почти как замену PHPUnit без серьезных изменений в коде.

Какие проблемы могут возникнуть:
При параллельном запуске могут возникнуть ошибки, связанные с одновременным доступом к базе данных (например, при попытке создать одинаковые таблицы). Для этого нужно изменить конфигурацию тестов, чтобы каждый тест использовал транзакции или запускал миграции до начала тестов.

Как решить:
🔹 Используй DatabaseTransactions вместо RefreshDatabase для предотвращения конфликтов в базе данных при параллельном запуске.

🔹 В случае с SQLite можно оставить стандартные настройки, так как каждая база будет независимой.

Результат:
После настройки ParaTest ты можешь увидеть ускорение в 2-10 раз, особенно на крупных проектах. Это заметно сокращает время, которое тратится на тестирование, и помогает быстрее доставлять код в продакшн.

💡 Совет: если проект большой, начинай с разделения тестов на группы и постепенно переводя их на параллельное выполнение, чтобы получать результат сразу.

🔗 Читать Статью

Библиотека пхпшника
🖥 Метрики эффективности сотрудника

В каждой команде бывают специалисты, чья ценность не укладывается в привычные метрики продуктивности. Они редко в топе по количеству закрытых задач, но именно их вклад критически важен для общего результата.

Такие люди помогают менее опытным коллегам разобраться в сложных вопросах, улучшают архитектуру и процессы незаметными правками, предотвращают ошибки ещё до того, как они стали задачами, создают культуру качества, которую не видно в отчётах.

Иногда стоит пересмотреть, как мы оцениваем эффективность. Потому что не все цифры отражают суть.

🔗 Подробности в статье

🐸 Библиотека джависта
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
🖥 Эволюция популярных операционных систем: 1981–2025

Разбор ключевых трендов ОС на персональных компьютерах и мобильных устройствах за последние 44 года! Как Windows уступил лидерство мобильным платформам, а Linux закрепил позиции в качестве базиса для множества систем — смотрите в видео.

➡️ Что внутри

🪟 Windows — отображены главные версии, от первых релизов до последних обновлений.

🍏 Macintosh (Classic Mac OS, OS X, macOS) — сгруппированы по поколениям без деления на подверсии.

🖥 Linux — отдельная категория с учётом популярных дистрибутивов: Ubuntu, Debian, Fedora и других.

🖥 Мобильные ОС — отражён переход с ПК на смартфоны и планшеты.

🔹 Откуда данные

1981–2000: анализ продаж ПК и опросы пользователей.

2000–2025: отчёты интернет-провайдеров и данные веб-трафика.

🔗 Оригинал с ютуба
Please open Telegram to view this post
VIEW IN TELEGRAM
Почему вы должны указывать тип данных в массивах в PHP

Статья обсуждает важность и преимущества использования типов массивов в PHP для повышения ясности кода, улучшения автодополнения в IDE и улучшения статического анализа.

👉 Читать

Библиотека пхпшника
Нужны ли PHP value objects как first-class citizen?

PHP в последние годы очень сильно поменялся. Типизация стала строже, появились enum'ы, readonly-свойства, promoted параметры в конструкторах… Но полноценной поддержки value objects (VO) — по-прежнему нет.

Хочешь передать Email, Amount или Money как обособленную сущность? Пиши класс руками. Хочешь избежать дублирования — делай свой фреймворк, или подтягивай Symfony/Doctrine компоненты. Где компактный и удобный синтаксис? Где встроенные механизмы сравнения, сериализации, валидации?

В других языках (Scala, Kotlin, Rust) это уже часть культуры. А у нас всё ещё debate.

💬 Вопрос к вам, PHP-разработчики:
— Почему, по-вашему, в PHP до сих пор нет нативной поддержки value objects?— Нужны ли они вообще как встроенная часть языка?— Может, достаточно классов и самодисциплины?

Библиотека пхпшника #междусобойчик
Instructor

Библиотека для структурированной экстракции данных на PHP, основанная на LLM. Создан для простоты, прозрачности и контроля.

Пример показывает, как инструктор извлекает структурированную информацию из предоставленного текста (или последовательности сообщений в чате).

🔗 Github

#инструменты
Метод findOrFail также принимает список идентификаторов. Если какой-либо из этих идентификаторов не найден, то он «ошибочен».

Это полезно, если вам нужно получить конкретный набор моделей и вы не хотите проверять, соответствует ли полученное количество ожидаемому количеству.

Библиотека пхпшника #буст
2025/05/23 21:37:01
Back to Top
HTML Embed Code: